<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        // 声明对象
        var obj = {
            a:12
        };
        // 以obj为原型 创建新对象
        // Object.create(prototype, [descriptors])
        // 第一个参数【prototype】：以哪个对象为原型
        // 第二个参数【descriptors】：描述新对象的属性

        // Object.create方法 的作用是以 对象为原型，创建一个新的对象。并且对对象的属性进行描述。
       var newObj =  Object.create(obj,{
           //name 是新对象的属性    
           name:{
                //描述name属性的对象

                // 设置name的值，默认属性值是只读的！
                value:"老王",
                writable:true, //设置属性是否可编辑。默认值false
                configurable:true, //设置属性是否可删除。默认为false
                enumerable:true //设置属性是否可以被遍历。默认为false
           },
           age:{
               value :18,
               writable:true,
               configurable:true,
               enumerable:true
           }
        });

        //1. 默认无法编辑描述属性 
        // newObj.name = "小李";
        // console.log(newObj.name); //小李
        // newObj.age = 99;
        console.log(newObj);

        //2. 默认是无法删除描述属性
        // delete newObj.name;
        // delete newObj.age

        // console.log(newObj.age);
        // console.log(newObj.name); //undefined

        // 3. 遍历

        // 默认是无法遍历描述属性
        // 遍历也会将原型当中的属性遍历出来
        // for(var item in newObj){
        //     console.log(item);
        // }

    </script>
</body>
</html>